今天也是練習CPE的題目
世界聞名的黑社會老大A先生要搬到紐約來了。在那裡他有一個大家族,並且他們都住在伯朗大道上。因為時常要拜訪所有的親戚,他想要找一間離他們最近的房子,也就是說他希望從他的家到所有的親戚家的路徑為最短的。
輸入值的第一列的數字為有多少組測試資料,且此數字為一整數數字。
每筆測試資料的第一個數字代表著有多少親戚,且數字範圍為0到500,接續的數字為親戚家的門牌號碼,但要注意的是,門牌號碼可能會相同,且範圍為0到30000。
輸出值為從他家到親戚家的最短距離和,但要特別注意的是,有些值相減後會出現負數,但距離沒有負值,因此要記得將數值取絕對值。
.
.
.
.
.
#include <stdio.h>
#include <stdlib.h>
void main()
{
int x,a,b[30010],i,j,y,sum,avg,distance,total;
scanf("%d",&x);//測試組數
while(x--)
{
scanf("%d",&a);//幾個鄰居
for(i=0;i<a;i++)
{
scanf("%d",&b[i]);//鄰居家位置
}
for(i=0;i<a;i++)
{
for(j=i+1;j<a;j++)
{
if(b[i]>b[j])
{
y=b[i];
b[i]=b[j];
b[j]=y;
}
}
}
sum=0;
for(i=0;i<a;i++)
{
sum=sum+b[i];
}
total=0;
for(i=0;i<a;i++)
{
avg=sum/a;
distance=abs(avg-b[i]);
total=total+distance;
}
printf("距離和=%d\n",total);
}
}
我們先將值進行小到大的排序
我們將所有值排好後,將所有值相加後取平均,可得知老大家的位置,再利用此位置與所有親戚家的距離相減取絕對值後,再將所有值相加即為題目規定之答案。
Day29就到這啦BYE~